package pack0916;

// —运算符的使用
public class Work01 {

    /*
    1. 定义类 Test1
    2. 定义 main 方法
    3. 定义两个 byte 类型变量 b1,b2,并分别赋值为 10 和 20.
    4. 定义变量 b3,保存 b1 和 b2 的和,并输出.
    5. 定义两个 short 类型变量 s1,s2,并分别赋值为 1000 和 2000.
    6. 定义变量 s3,保存 s1 和 s2 的和,并输出.
    7. 定义一个 char 类型变量 c1 赋值为'a',一个 int 类型变量 i1 赋值为 10.
    8. 定义变量 ch3,保存 c1 和 i1 的差,并输出.
     */
    public static void a() {
        byte b1 = 10, b2 = 20;
        int b3 = b1 + b2;
        System.out.println(b3);
        short s1 = 1000, s2 = 2000;
        int s3 = s1 + s2;
        System.out.println(s3);
        char c1 = 'a';
        int i1 = 10;
        int ch3 = c1 + i1;
        System.out.println(ch3);
    }

    /*
        1. 定义类 Test2
        2. 定义 main 方法
        3. 定义 int 类型变量 i1 和 long 类型变量 l1
        4. 定义变量 add,保存 i1 和 l1 的和,并输出.
        5. 定义 long 类型变量 l2 和 float 类型变量 f2
        6. 定义变量 add2,保存 l2 和 f2 的和,并输出.
        7. 定义 int 类型变量 i3 和 double 类型变量 d3
        8. 定义变量 add3,保存 i3 和 d3 的和,并输出.
        9. 定义 float 类型变量 f4 和 double 类型变量 d4
        10.定义变量 add4,保存 f4 和 d4 的和,并输出.
     */
    public static void b() {
        int i1 = 100;
        long l1 = 200;
        long add = i1 + l1;
        System.out.println(add);
        long l2 = 999900;
        float f2 = 100.44f;
        float add2 = l2 + f2;
        System.out.println(add2);
        int i3 = 100;
        double d3 = 999900.45;
        double add3 = i3 + d3;
        System.out.println(add3);
        float f4 = 100000F;
        double d4 = 1.2625;
        double add4 = f4 + d4;
        System.out.println(add4);
    }

    /*
        1. 定义类 Test3
        2. 定义 main 方法
        3. 定义 char 类型变量 ch,赋值为'J'
        4. 使用强制转换的方式,将变量 ch 转换为小写'j',并输出
        5. 定义 char 类型变量 ch2,赋值为'a'
        6. 使用+=的方式,将变量 ch2 转换为大写'A',并输出
        7. 定义 double 类型变量 d3,int 类型变量 i3
        8. 定义 double 变量 sum3,保存 d3 与 i3 的和,输出 sum3 的值和 sum3 去除小数部分的值
        9. 定义 double 类型变量 d4,int 类型变量 i4
        10.定义 int 变量 mul4,保存 d4 和 i4 乘积的整数部分,并输出
     */
    public static void c() {
        // A:65 a:97
        char ch = 'J';
        ch = (char) (ch + 32);
        System.out.println(ch);
        char ch2 = 'a';
        ch2 += -32;
        System.out.println(ch2);
        double d3 = 2.345;
        int i3 = 100;
        double sum3 = d3 + i3;
        System.out.println(sum3);
        System.out.println((int) sum3);
        double d4 = 199.2;
        int i4 = 23;
        int sul4 = (int) (d4 * i4);
        System.out.println(sul4);
    }

    /*
        1. 定义类 Test4
        2. 定义 main 方法
        3. 定义两个 int 类型变量 a1 和 a2,分别赋值 10,11,判断变量是否为偶数,拼接输出结果
        4. 定义两个 int 类型变量 a3 和 a4,分别赋值 12,13,判断变量是否为奇数,拼接输出结果
     */
    public static void d() {
        int a1 = 10, a2 = 11;
        String str1 = a1 % 2 == 0 ? "偶数" : "奇数";
        String str2 = a2 % 2 == 0 ? "偶数" : "奇数";
        System.out.println(str1);
        System.out.println(str2);

        int a3 = 12, a4 = 13;
        String str3 = a3 % 2 == 0 ? "偶数" : "奇数";
        String str4 = a4 % 2 == 0 ? "偶数" : "奇数";
        System.out.println(str3);
        System.out.println(str4);
    }

    /*
        1. 定义类 Test5
        2. 定义 main 方法
        3. 定义一个 int 类型变量 a,变量 b,都赋值为 20.
        4. 定义 boolean 类型变量 bo , 判断++a 是否被 3 整除,并且 a++ 是否被 7 整除,将结果赋值
        给 bo
        5. 输出 a 的值,bo 的值.
        6. 定义 boolean 类型变量 bo2 , 判断 b++ 是否被 3 整除,并且++b 是否被 7 整除,将结果赋
        值给 bo2
        7. 输出 b 的值,bo2 的值.
     */
    public static void e() {
        int a = 20, b = 20;
        boolean bo = ((++a) % 3 == 0) && (a++ % 7 == 0);
        System.out.println(bo);
        System.out.println(a);
        boolean bo2 = ((b++) % 3 == 0) && (++b % 7 == 0);
        System.out.println(bo2);
        System.out.println(b);
    }

    /*
        1. 定义类 Test6
        2. 定义 main 方法
        3. 定义方法 printNum,在 main 方法中调用 printNum 方法
        4. printNum 方法中,定义 int 变量 a 赋值为 9,b 也赋值为 9
        5. printNum 方法中,定义 int 变量 num 赋值为++a.
        6. printNum 方法中,定义 boolean 变量 bo,使用三元运算符赋值,当 num>=10,赋值为 true,否
        则为 false,打印 bo 的值.
        7. printNum 方法中,定义 int 变量 num2 赋值为 b++.
        8. printNum 方法中,定义 boolean 变量 bo2,使用三元运算符赋值,当 num2>=10,赋值为 true,
        否则为 false,打印 bo2 的值.
     */
    public static void f() {
        int a = 9;
        int b = 9;
        int num = ++a; // 9 ? 10?
        boolean bo = num >= 10;
        System.out.println(bo);
        int num2 = b++;
        boolean bo2 = num2 >= 10;
        System.out.println(bo2);
    }

    /*
        1. 定义类 Test7
        2. 定义 main 方法
        3. 定义方法 printNum,在 main 方法中调用 printNum 方法
        4. printNum 方法中,定义 float 变量 f1 赋值 12345.01
        5. printNum 方法中,定义 float 变量 f2 赋值 12345.00
        6. printNum 方法中,定义 float 变量 var1 , 使用三元运算符赋值,当 f1 大于等于 f2 时,赋值12456 ,当 f1 小于 f2 赋值 12456.02
        7. printNum 方法中,定义 float 变量 var2 , 保存 var1 与 1024 的和.
        8. printNum 方法中,同时输出 var1,var2 的值.
     */
    public static void g() {
        float f1 = 12345.01f;
        float f2 = 12345.00f;
        float var1 = f1 >= f2 ? 12456f : 12456.02f;
        System.out.println(var1);
        float var2 = var1 + 1024;
        System.out.println(var2);
    }

    /*
        1. 定义类 Test8
        2. 定义 main 方法
        3. 定义 printNum 方法,在 main 方法中调用 printNum 方法
        4. printNum 方法中,定义 int 类型变量 i 赋值为 10,j 赋值为 20;
        5. printNum 方法中,将 i/5 的商 与 j 的和 赋值给 j
        6. printNum 方法中,定义 int 类型变量 k,将 j 赋值给 k.
        7. printNum 方法中,最后同时输出 i, j ,k 的值,查看结果
     */
    public static void h() {
        int i = 10, j = 20;
        j = i / 5 + j;
        int k = j;
        System.out.println(i);
        System.out.println(j);
        System.out.println(k);
    }

    /*
        1. 定义类 Test9
        2. 定义 main 方法
        3. 定义 printNum 方法
        4. printNum 方法中,定义 String 类型变量 str.
        5. printNum 方法中,定义 int 类型变量 num,赋为任意整数值.
        6. printNum 方法中,通过三元运算符,判断 num 为偶数,将"偶数"赋值给 str,否则将"奇数"赋值给 str
        7. printNum 方法中,输出拼接效果
     */
    public static void i() {
        String str;
        int num = 19;
        str = num % 2 == 0 ? "偶数" : "奇数";
        System.out.println(num + "是" + str);
    }


    /*
        1. 定义类 Test10
        2. 定义 main 方法
        3. 定义 add 方法,打印两个变量的和
        4. 定义 sub 方法,打印两个变量的差
        5. 定义 mul 方法,打印两个变量的积
        6. 定义 div 方法,打印两个变量的商
        7. 定义 remain 方法,打印两个变量的余数
        8. main 方法中,依次调用 add 方法,sub 方法,mul 方法,div 方法,remain 方法
     */
    public static void add() {
        // [18-40] : [0,1)*22-->[0,22)+18-->[18,40)-->[18,39]
        int a = (int) (Math.random() * 23 + 18);
        int b = (int) (Math.random() * 23 + 18);
        System.out.println(a + b);
    }

    public static void sub() {
        int a = (int) (Math.random() * 23 + 18);
        int b = (int) (Math.random() * 23 + 18);
        System.out.println(a - b);
    }

    public static void mul() {
        int a = (int) (Math.random() * 23 + 18);
        int b = (int) (Math.random() * 23 + 18);
        System.out.println(a * b);
    }

    public static void div() {
        int a = (int) (Math.random() * 23 + 18);
        int b = (int) (Math.random() * 23 + 18);
        System.out.println(a / b);
    }

    public static void remain() {
        int a = (int) (Math.random() * 23 + 18);
        int b = (int) (Math.random() * 23 + 18);
        System.out.println(a % b);
    }

    public static void main(String[] args) {
        add();
        sub();
        mul();
        div();
        remain();
    }
}